﻿// what the fuck.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//生成一张由“0”和“1”组成的特定大小的地图。主要透过一个二元数组实现。

#include <iostream>
#include <cmath>
#include<ctime>
#include <cstdlib>
using namespace std;

char map[30][30];
int px, py;//当前位置

int randGenerateur()
{
    srand(rand()*time(nullptr)*rand());
    int r= rand() % 100 + 1;
    return r;
}

void mapGenerateur(int chance)
{
    for (int i = 0; i < 29; i++)
    {
        for (int j = 0; j < 29; j++)
        {
            if (chance >= randGenerateur())
            {
                map[i][j] = ' ';
            }
            else 
            {
                map[i][j] = '*';
            }
        }
    }
}

void mapPrinteur()
{
    for (int i = 0; i < 29; i++)
    {
        for (int j = 0; j < 29; j++)
        {
            cout << map[i][j] << " ";
        }
        cout << "\n";
    }
}

int control()
{
    int in;
    cout << "移动：";
    cin >> in;
    switch (in)
    {
        case 1://left
        {
            if (map[px - 1][py] = ' '&& px - 1 > 0)
            {
                px -= 1;
                map[px + 1][py] = ' ';
                map[px][py] = 'P';
            }
            else 
            {
                cout << "无法移动到指定位置" << '\n';
                return 1;
            }
        }
        case 2://right
        {
            if (map[px + 1][py] = ' ' && px + 1 < 30)
            {
                px += 1;
                map[px - 1][py] = ' ';
                map[px][py] = 'P';
            }
            else
            {
                cout << "无法移动到指定位置" << '\n';
                return 1;
            }
        }
        case 3://up
        {
            if (map[px][py+1] = ' ' && py - 1 > 0)
            {
                py += 1;
                map[px][py - 1] = ' ';
                map[px][py] = 'P';
            }
            else
            {
                cout << "无法移动到指定位置" << '\n';
                return 1;
            }
        }
        case 4://down
        {
            if (map[px][py - 1] = ' ' && py + 1 < 30)
            {
                py -= 1;
                map[px][py + 1] = ' ';
                map[px][py] = 'P';
            }
            else
            {
                cout << "无法移动到指定位置" << '\n';
                return 1;
            }
        }
        default:
            cout << "无法执行命令。可能是输入的命令不正确。"<< '\n';
            return 1;
    }
}

void mainbody()
{
    bool stop = 0;
    for (int i = 0; i < 29; i++)//确定初始位置
    {
        for (int j = 0; j < 29; j++)
        {
            if (map[i][j] == ' ')
            {
                map[i][j] = 'P';
                px = i;
                py = j;
                break;
            }
        }
        if (!stop)
        {
            break;
        }
    }
    mapPrinteur();
    for(int i =1;i<501;i++)
    {
        control();
        mapPrinteur();
    }
}

int main()
{
    int n;
    cin >> n;
    mapGenerateur(n);
    mainbody();
    cout << "vict";
}